home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / DClap / DChildApp.h < prev    next >
Text File  |  1996-07-05  |  2KB  |  94 lines

  1. // DChildApp.h
  2. // d.g.gilbert
  3.  
  4. #ifndef _DCHILDAPP_
  5. #define _DCHILDAPP_
  6.  
  7. #include "DTaskMaster.h"
  8. #include "DFile.h"
  9.  
  10. class DList;
  11. class DNetOb;
  12. class DBOP;
  13.  
  14. class DChildFile : public DFile
  15. {    
  16. public:
  17.     enum kinds { kOutput, kInput, kStdin, kStdout, kStderr };
  18.     enum actions { kNoAction, kOpenText, kOpenPict };
  19.     enum { kDontDelete = false, kDeleteWhenDone = true };
  20.     short fAction;     
  21.     short fKind;
  22.     Boolean    fDelete;
  23.     char * fName2;
  24.     
  25.     DChildFile( const char* filename, short kind= kOutput, Boolean deleteWhenDone = false,
  26.                             short doneAction= kOpenText, const char* openmode = NULL,
  27.                             const char* ftype = NULL, const char* fcreator = NULL);
  28.     virtual ~DChildFile();
  29.     virtual void ClearStorage();
  30. };
  31.  
  32. class DChildApp : public DTaskMaster
  33. {    
  34. public:
  35.     enum CallMethods {
  36.             kNone,
  37.             kLocalexec,
  38.             kBOPexec,
  39.             kHTTPget,
  40.             kHTTPpost,
  41.             kOther
  42.             };
  43.             
  44.     char  * fName, * fCmdline;
  45.     const char * fStdin, * fStdout, * fStderr;
  46.     long        fProcessNum;
  47.     short        fLaunched;
  48.     short        fResult;
  49.     short        fCallMethod;
  50.     Boolean    fReusable;     // don't delete from manager list after run
  51.     DList * fFiles;          // of DChildFile
  52.     DBOP  * fBopper;        // network childapps
  53.     DNetOb * fNob;            // network childapps
  54.     
  55.     DChildApp();
  56.     DChildApp( char* appname, char* cmdline= NULL, Boolean showStdout = true, 
  57.                         char* Stdinfile = NULL, Boolean showStderr = true);
  58.     virtual ~DChildApp();
  59.     virtual void AddFile( DChildFile* aFile);
  60.     virtual void AddFile( short filekind, char* name = NULL);
  61.     virtual void AddInputBuffer( short filekind, char* buffer, ulong buflen);
  62.     virtual void ClearFiles();
  63.     virtual Boolean Launch();
  64.     virtual Boolean LaunchBop();
  65.     virtual Boolean LaunchLocal();
  66.     virtual void Finished();
  67.     virtual void FileAction( DChildFile* aFile);
  68. };
  69.  
  70.  
  71. class DExternalHandler : public DChildApp
  72. {    
  73. public:
  74.     DExternalHandler( char* cmdlineOrDocname);
  75.     virtual Boolean Launch();    
  76.     virtual void Finished();
  77. };
  78.  
  79. class DChildAppManager : public DTaskMaster
  80. {    
  81. public:
  82.     enum { kChildManagerTask = 4782, kStatusTask };
  83.     static DList*     gChildList; // of DChildApp
  84.     static long         gLastTime;
  85.     static short      BuryDeadChildApp( long theEvent);
  86.     static Boolean  CheckStatus();
  87.     DChildAppManager();
  88.     virtual Boolean IsMyTask(DTask* theTask);
  89. };
  90.  
  91. extern DChildAppManager* gChildAppManager;
  92.  
  93. #endif
  94.